package tool

import (
	"github.com/hajimehoshi/ebiten/v2/audio"
	"github.com/hajimehoshi/ebiten/v2/audio/mp3"
	"github.com/hajimehoshi/ebiten/v2/ebitenutil"
	"log"
)

var RunFile ebitenutil.ReadSeekCloser
var BouncFile ebitenutil.ReadSeekCloser
var BulletFile ebitenutil.ReadSeekCloser
var Play1music *audio.Player
var Play2music *audio.Player
var Play3music *audio.Player

func NewMusic() {
	//创建一个音频对象，用于管理音频对象
	sampleRate := 44100
	context := audio.NewContext(sampleRate)
	//收集音频文件
	frun, err := ebitenutil.OpenFile("./src/music/run.mp3")
	if err != nil {
		log.Fatal(err)
	}
	//收集弹跳的音效
	fbounc, err := ebitenutil.OpenFile("./src/music/bounc.mp3")
	if err != nil {
		log.Fatal(err)
	}
	//收集子弹的音效
	fbullet, err := ebitenutil.OpenFile("./src/music/bullet.mp3")
	if err != nil {
		log.Fatal(err)
	}
	BouncFile = fbounc
	RunFile = frun
	BulletFile = fbullet
	//音频解码器
	drun, err := mp3.Decode(context, frun)
	if err != nil {
		log.Fatal(err)
	}
	dbounc, err := mp3.Decode(context, fbounc)
	if err != nil {
		log.Fatal(err)
	}
	dbullet, err := mp3.Decode(context, fbullet)
	if err != nil {
		log.Fatal(err)
	}
	//创建音乐播放器，使用音频上下文对象创建音乐播放器
	player1, err := audio.NewPlayer(context, drun)
	if err != nil {
		log.Fatal(err)
	}
	Play1music = player1
	player2, err := audio.NewPlayer(context, dbounc)
	if err != nil {
		log.Fatal(err)
	}
	Play2music = player2
	player3, err := audio.NewPlayer(context, dbullet)
	if err != nil {
		log.Fatal(err)
	}
	Play3music = player3

	//播放音乐：调用音乐播放器的Play()方法开始播放音乐
	player1.SetVolume(0.5) // 设置音量为50%
	player2.SetVolume(0.8) // 设置音量为50%
	player3.SetVolume(0.5) // 设置音量为50%
}

// 用来关闭音乐文件，当程序运行完毕的时候。
func EndMusic() {
	if BouncFile != nil {
		BouncFile.Close()
	}
	if RunFile != nil {
		RunFile.Close()
	}
	if BulletFile != nil {
		BulletFile.Close()
	}
}

////加载音效文件
//f,err := os.Open("sound.wav")
//if err != nil {
//	log.Fatal(err)
//}
////解码音效文件
//d,err := wav.Decode(audio,f)
